package org.lee.common.domain;

public enum ResultCode {

    /* 成功状态码 */
    SUCCESS(0, "成功"),
    /* 2开头 （请求成功）表示成功处理了请求的状态代码 */
    // SUCCESS(200, "（成功） 服务器已成功处理了请求。 通常，这表示服务器提供了请求的网页。"),
    CREATED(201, "（已创建） 请求成功并且服务器创建了新的资源。"),
    ACCEPTED(202, "（已接受） 服务器已接受请求，但尚未处理。"),
    UNAUTHORIZED_INFORMATION(203, "（非授权信息） 服务器已成功处理了请求，但返回的信息可能来自另一来源。"),
    NO_CONTENT(204, "（无内容） 服务器成功处理了请求，但没有返回任何内容。 "),
    RESET_CONTENT(205, "（重置内容） 服务器成功处理了请求，但没有返回任何内容。 "),
    PARTIAL_CONTENT(206, "（部分内容） 服务器成功处理了部分 GET 请求。"),
    /* 3开头 （请求被重定向）表示要完成请求，需要进一步操作。 通常，这些状态代码用来重定向 */
    MULTIPLE_CHOICES(301, "（多种选择） 针对请求，服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作，或提供操作列表供请求者选择。 "),
    MOVE_PERMANENTLY(302, "（永久移动） 请求的网页已永久移动到新位置。 服务器返回此响应（对 GET 或 HEAD 请求的响应）时，会自动将请求者转到新位置。 "),
    TEMPORARY_MOVE(303, "（临时移动） 服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。 "),
    VIEW_OTHER_LOCATIONS(304, "（查看其他位置） 请求者应当对不同的位置使用单独的 GET 请求来检索响应时，服务器返回此代码。 "),
    UNMODIFIED(305, "（未修改） 自从上次请求后，请求的网页未修改过。 服务器返回此响应时，不会返回网页内容。 "),
    USE_PROXY(306, "（使用代理） 请求者只能使用代理访问请求的网页。 如果服务器返回此响应，还表示请求者应使用代理。 "),
    TEMPORARY_REDIRECT(307, "（临时重定向） 服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。"),
    /*
     * 4开头 （请求错误）这些状态代码表示请求可能出错，妨碍了服务器的处理
     */
    BAD_REQUEST(400, "（错误请求） 服务器不理解请求的语法。"),
    UNAUTHORIZED(401, "（未授权） 请求要求身份验证。 对于需要登录的网页，服务器可能返回此响应。"),
    PROHIBIT(403, "（禁止） 服务器拒绝请求。"),
    NOT_FOUND(404, "（未找到） 服务器找不到请求的网页。"),
    METHOD_DISABLED(405, "（方法禁用） 禁用请求中指定的方法。"),
    NOT_ACCEPT(406, "（不接受） 无法使用请求的内容特性响应请求的网页。"),
    AGENT_AUTHORIZATION_REQUIRED(407, "（需要代理授权） 此状态代码与 "),
    REQUEST_TIMED_OUT(408, "（请求超时） 服务器等候请求时发生超时。"),
    CONFLICT(409, "（冲突） 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。"),
    DELETED(410, "（已删除） 如果请求的资源已永久删除，服务器就会返回此响应。"),
    NEED_EFFECTIVE_LENGTH(411, "（需要有效长度） 服务器不接受不含有效内容长度标头字段的请求。"),
    PREREQUISITES_NOT_MET(412, "（未满足前提条件） 服务器未满足请求者在请求中设置的其中一个前提条件。"),
    REQUEST_ENTITY_IS_TOO_LARGE(413, "（请求实体过大） 服务器无法处理请求，因为请求实体过大，超出服务器的处理能力。"),
    REQUESTED_URI_TOO_LONG(414, "（请求的 URI 过长） 请求的 URI（通常为网址）过长，服务器无法处理。"),
    UNSUPPORTED_MEDIA_TYPE(415, "（不支持的媒体类型） 请求的格式不受请求页面的支持。"),
    REQUESTED_SCOPE_NOT_MEET_REQUIREMENTS(416, "（请求范围不符合要求） 如果页面无法提供请求的范围，则服务器会返回此状态代码。"),
    UNMET_EXPECTATIONS(417, "（未满足期望值） 服务器未满足期望请求标头字段的要求。"),
    PARAM_IS_INVALID(418, "参数无效"),
    PARAM_IS_BLANK(419, "参数为空"),
    PARAM_TYPE_BIND_ERROR(420, "参数类型错误"),
    PARAM_NOT_COMPLETE(421, "参数缺失"),
    USER_NOTLOGGED_IN(422, "用户未登录"),
    USER_LOGIN_ERROR(423, "账号不存在或密码错误"),
    /*
     *  5开头（服务器错误）这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误，而不是请求出错
     */
    SYSTEM_ERROR(500, "系统异常，请稍后重试"),
    NOT_YET_IMPLEMENTED(501, "（尚未实施） 服务器不具备完成请求的功能。 例如，服务器无法识别请求方法时可能会返回此代码。 "),
    FAULT_GATEWAY(502, "（错误网关） 服务器作为网关或代理，从上游服务器收到无效响应。 "),
    SERVICE_NOT_AVAILABLE(503, "（服务不可用） 服务器目前无法使用（由于超载或停机维护）。 通常，这只是暂时状态。 "),
    GATEWAY_TIMEOUT(504, "（网关超时） 服务器作为网关或代理，但是没有及时从上游服务器收到请求。"),
    UNSUPPORTED_HTTP_VERSION(505, "（HTTP 版本不受支持） 服务器不支持请求中所用的 HTTP 协议版本。"),
    PAY_ERROR(510, "支付失败"),
    REFUND_ERROR(511, "退款失败"),
    NOTIFY_VERIFY_ERROR(512, "回调验证错误"),
    DATA_EXISTS(513, "数据已存在"),
    DATA_NOT_EXISTS(514, "数据不存在"),
    NOT_SUPPORTED(515, "功能不支持"),
    SIGN_INVALID(516, "签名不合法"),
    LOGIN_FAILURE(517, "登录失败"),
    BUSINESS_FAILURE(518, "业务处理失败"),
    DATA_EXPIRED(519, "数据已过期"),
    EXPORT_EMPTY(520, "导出结构为空"),
    IO_EXCEPTION(521, "IO流异常"),
    ;

    private Integer code;
    private String message;

    private ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer code() {
        return this.code;
    }

    public String message() {
        return this.message;
    }

}
